package com.wugh.fast.kernel.core.thread;

import java.util.LinkedList;

/**
 * 说明: 基于InheritableThreadLocal封装的线程
 *
 * @author wugh
 * @date 2020-01-15 14:00
 */
public class FastInheritableThreadLocal<T> extends InheritableThreadLocal<LinkedList<T>> {

    @Override
    protected LinkedList<T> childValue(LinkedList<T> parentValue) {
        if (parentValue == null) {
            return null;
        } else {
            return new LinkedList<>(parentValue);
        }
    }

    /**
     * 加入一个
     *
     * @param value
     */
    public void add(T value) {
        LinkedList<T> ts = this.get();
        ts.add(value);
    }

    /**
     * 获取最后一个
     *
     * @return
     */
    public T getLast() {
        LinkedList<T> ts = this.get();
        if (ts.isEmpty()) {
            return null;
        }
        return ts.getLast();
    }

    /**
     * 移除最后一个
     *
     * @return
     */
    public T removeLast() {

        return this.get().removeLast();
    }
}
